// 给定一个 n × n 的二维矩阵 matrixx 表示一个图像。请你将图像顺时针旋转 90 度。

// 你必须在 原地 旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/rotate-image
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

//分两次转，一次45°，对角线+中线 

// 执行用时：
// 0 ms
// , 在所有 C++ 提交中击败了
// 100.00%
// 的用户
// 内存消耗：
// 6.7 MB
// , 在所有 C++ 提交中击败了
// 96.41%
// 的用户

#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<set>
using namespace std;

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int len=matrix.size();
        if(len==0){
            return;
        }
        for(int i=0;i<len;i++){
            for(int j=0;j<i;j++){
                swap(matrix[i][j],matrix[j][i]);
            }
        }
        int cnt=(len+1)/2;
        for(int i=0;i<cnt;i++){
            for(int j=0;j<len;j++){
                swap(matrix[j][i],matrix[j][len-1-i]);
            }
        }
    }
};